using System;
using System.Collections.Generic;
using System.Text;

namespace RRHH.Competencias.Entities
{
    /// <summary>
    /// Representa las capacidades a otorgar con el dictado de un curso,
    /// junto al nivel de evolucion esperado
    /// </summary>
    public class CapacidadCurso
    {
        private Capacidad capacidad;
        private NivelCapacidad nivelMinimo;
        private NivelCapacidad nivelMaximo;
        private NivelCapacidad nivelEsperado;

        public CapacidadCurso(Capacidad capacidad)
        {
            this.capacidad = capacidad;
        }

        #region Propiedades
        public Capacidad Capacidad
        {
            get { return capacidad; }
            set { capacidad = value; }
        }

        public NivelCapacidad NivelMinimo
        {
            get
            {
                return nivelMinimo;
                
            }
            set { nivelMinimo = value; }
        }

        public NivelCapacidad NivelMaximo
        {
            get 
            {
                return nivelMaximo;
             
            }
            set { nivelMaximo = value; }
        }

        public NivelCapacidad NivelEsperado
        {
            get 
            {
                return nivelEsperado;
               
            }
            set { nivelEsperado = value; }
        }

       
        public long CapacidadId
        {
            get
            {
                if (capacidad == null || capacidad.Id != 0) return capacidad.Id;
                return 0;
            }
        }

        public string CapacidadNombre
        {
            get
            {
                if (capacidad == null || !string.IsNullOrEmpty(capacidad.Nombre)) return capacidad.Nombre;
                return string.Empty;
            }
        }

        public string CapacidadDescripcion
        {
            get
            {
                if (capacidad == null || !string.IsNullOrEmpty(capacidad.Descripcion)) return capacidad.Descripcion;
                return string.Empty;
            }
        }


        #endregion

        #region Metodos
        public override bool Equals(object obj)
        {
            CapacidadCurso comparar;
            
            if (obj == null) return false;

            try
            {
                comparar = (CapacidadCurso)obj;

                if (capacidad.Equals(comparar.capacidad)) return true;
                return false;
            }
            catch (Exception)
            {
                return false;
            }
        }

        public override int GetHashCode()
        {
            return base.GetHashCode();
        } 
        #endregion
    }
}
